TeamA

id: task-100.4 title: Build Kanban board component status: Done assignee: [] created_date: '2025-06-22' updated_date: '2025-07-05' labels: [] dependencies:

  • task-100.1
  • task-100.3 parent_task_id: task-100

Description

Create interactive Kanban board using React and shadcn/ui. This will be the main view for users to visualize and manage their tasks in a familiar Kanban-style interface.

Component Design

Board Component Requirements

Component Interface:

  • Accept tasks array with metadata
  • Accept status configuration from project config
  • Handle task movement between columns
  • Handle task click for detail view

Features

1. Drag and Drop

  • Use @dnd-kit/sortable for smooth drag-and-drop
  • Visual feedback during drag operations
  • Snap-to-column behavior
  • Touch support for mobile devices

2. Task Cards

Each task card will display:

  • Task ID (e.g., task-42)
  • Task title
  • Assignee avatar/initials
  • Priority indicator (color-coded)
  • Label badges
  • Subtask count (if applicable)

3. Column Layout

  • Dynamic columns based on configured statuses
  • Column headers with task counts
  • Horizontal scrolling for many columns
  • Column width constraints for readability

4. Responsive Design

  • Desktop: Multi-column horizontal layout
  • Tablet: Scrollable columns with touch support
  • Mobile: Stacked vertical layout with collapsible columns

UI Components (shadcn/ui)

  • Card - For task cards and column containers
  • Badge - For labels and status indicators
  • Avatar - For assignee display
  • ScrollArea - For column content scrolling
  • Skeleton - For loading states

State Management Requirements

Data Fetching:

  • Load tasks from /api/tasks endpoint
  • Handle loading, error, and success states
  • Support data refetching when needed

Task Updates:

  • Implement optimistic updates for drag operations
  • Rollback changes on API error
  • Provide clear error feedback to user

Performance Optimizations

  • Virtual scrolling for large task lists
  • Memoized task cards to prevent unnecessary re-renders
  • Optimistic updates for drag operations
  • Debounced API calls for moves

Accessibility

  • Keyboard navigation support
  • ARIA labels for screen readers
  • Focus management during interactions
  • High contrast mode support

Acceptance Criteria

  • [x] Board displays tasks grouped by status
  • [x] Drag and drop functionality works
  • [x] Tasks show title ID and assignee
  • [x] Board is responsive on mobile
  • [x] Loading and error states handled
Brodocs MVP